import ar.uba.fi.algo3.titiritero.ObjetoVivo;
import ar.uba.fi.algo3.titiritero.Posicionable;

public class Pacman implements Posicionable, ObjetoVivo{
	
	private Punto posicion;
	private int direccion;
	
	public Pacman(){
		
		this.posicion = new Punto(23, 13);
		direccion = Constantes.DIRECC_IZQUIERDA;
	}
	
	public Punto getPosicion() {
		return posicion;
	}
	
	public void setPosicion(Punto posicion) {
		this.posicion = posicion;
	}

	public int getDireccion() {
		return direccion;
	}

	public void setDireccion(int direccion) {
		this.direccion = direccion;
	}
	
	/**
	 * Mueve el PacMan en una direcci�n dentro del laberinto.
	 * Mientras se mueve el PacMan tambi�n come.
	 * @param direccion
	 * @param laberinto
	 */
	public void mover(int direccion, Laberinto laberinto){
		
		this.direccion = direccion;
		
		Punto nuevaPosicion = laberinto.obtenerNuevaPosicionSegunDireccion(direccion, laberinto.getPosicionPacman());
		
		Celda celda = laberinto.getCelda(nuevaPosicion);
		
		try {
			
			this.comer(celda, laberinto);
			
		}catch (CeldaParedException e) {
			
			//Cuando quiere comer una pared, no hace nada
			//y espera una nueva directiva
		}
			
	}

	/**
	 * 
	 * Come la celda correspondiente dentro del laberinto.
	 * La celda interact�a seg�n el tipo de celda que sea.
	 * @param celda
	 * @param laberinto
	 */
	private void comer(Celda celda, Laberinto laberinto) {
				
		celda.interactuar(laberinto);			
	}

	public int getX() {
		// TODO Auto-generated method stub
		return posicion.getX();
	}

	public int getY() {
		// TODO Auto-generated method stub
		return posicion.getY();
	}

	public void vivir() {
		// TODO Auto-generated method stub
		
	}
}
